%% @author jovial
%% @doc @todo Add description to direcao.

-module(direcao).

%% ====================================================================
%% API functions
%% ====================================================================
-export([inverter/1, obterPosicoesPossiveis/2, getDirecaoRelativa/1, getDirecaoAleatoria/0]).

inverter(norte) -> sul;
inverter(sul) -> norte;
inverter(leste) -> oeste;
inverter(oeste) -> leste.

obterPosicoesPossiveis(norte, {X, Y}) ->
	[{X, Y - 1}, {X - 1, Y - 1}, {X + 1, Y - 1}];
obterPosicoesPossiveis(sul, {X, Y}) ->
	[{X, Y + 1}, {X - 1, Y + 1}, {X + 1, Y + 1}];
obterPosicoesPossiveis(leste, {X, Y}) ->
	[{X + 1, Y}, {X + 1, Y - 1}, {X + 1, Y + 1}];
obterPosicoesPossiveis(oeste, {X, Y}) ->
	[{X - 1, Y}, {X - 1, Y - 1}, {X - 1, Y + 1}].

getDirecaoRelativa({X, Y}) ->
	AbsX = abs(X),
	AbsY = abs(Y),
	if AbsX > AbsY ->
			if X > 0 ->
					leste;
				true ->
					oeste
		 	end;
		true ->
			if Y > 0 ->
					sul;
				true ->
					norte
		 	end
	end.

getDirecaoAleatoria() ->
	Rand = random:uniform(4),
	case Rand of
		1 -> norte;
		2 -> leste;
		3 -> sul;
		4 -> oeste
	end.
	